package com.ayu.chatroom.util;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Map;

/**
 * @Author: 徐林玉//作者及
 * @Date: 2021/10/19//完成日期
 * @Description: //
 * @Version: v0.0.1 // 版本信息
 * @Function List: // 主要函数及其功能
 * @Others: // 其它内容的说明
 * @History: // 历史修改记录
 **/
//统一返回结果的类
@Data
public class R {

	@ApiModelProperty(value = "是否成功")
	private Boolean success;

	@ApiModelProperty(value = "返回码")
	private Integer status;

	@ApiModelProperty(value = "返回消息")
	private String msg;

	@ApiModelProperty(value = "返回数据")
	private Object data;

	/**
	 * 把构造方法私有
	 */
	private R() {}

	/**
	 * 成功静态方法
	 * @return R
	 */
	public static R ok() {
		R r = new R();
		r.setSuccess(true);

		r.setStatus(ResultCode.SUCCESS);
		r.setMsg("成功");
		return r;
	}

	/**
	 * 失败静态方法
	 * @return R
	 */
	public static R error() {
		R r = new R();
		r.setSuccess(false);
		r.setStatus(ResultCode.ERROR);
		r.setMsg("失败");
		return r;
	}


	public static R failed(Integer code){

		R r = new R();
		r.setSuccess(false);
		r.setStatus(code);
		r.setMsg("失败");
		return r;
	}

	public R success(Boolean success){
		this.setSuccess(success);
		return this;
	}

	public R message(String message){
		this.setMsg(message);
		return this;
	}

	public R code(Integer code){
		this.setStatus(code);
		return this;
	}

//	public R data(String key, Object value){
//		this.data.put(key, value);
//
//
//		return this;
//	}

	public R data(Map<String, Object> map){
		this.setData(map);
		return this;
	}

	public R data(Object o){
		this.setData(o);
		return this;
	}
}
